-- rate_limit.lua
-- 获取限流的键（标识符）
local key = KEYS[1]
-- 获取每秒允许的最大请求数
local limit = tonumber(ARGV[1])
-- 获取键的过期时间（秒）
local expire_time = tonumber(ARGV[2])

-- 获取当前的请求数
local current = redis.call('get', key)
-- 如果当前请求数存在且已经超过或达到限制，返回0（拒绝请求）
if current and tonumber(current) >= limit then
    return false
else
    -- 如果当前请求数不存在或未超过限制，增加请求数
    current = redis.call('incr', key)
    -- 如果这是第一次请求，设置过期时间
    if tonumber(current) == 1 then
        redis.call('expire', key, expire_time)
    end
    -- 返回1（允许请求）
    return true
end
